// ignore_for_file: unnecessary_type_check

/*
Dart中的对象操作符:
  ?     条件运算符 （了解）   https://dart.dev/tools/diagnostic-messages#invalid_null_aware_operator        
  as    类型转换
  is    类型判断
  ..    级联操作 （连缀）  (记住)
*/

class Person {
  String name;
  num age;
  Person(this.name, this.age);
  void printInfo() {
    print("${this.name}---${this.age}");
  }
}

main() {
  //  Person p=new Person('张三', 20);
  //  p?.printInfo();   //已被最新的dart废弃 了解

  // Person p = new Person('张三', 20);
  // if (p is Person) { // 判断实例对象p 的类型是不是Person
  //   p.name = "李四";
  // }
  // p.printInfo();
  // print(p is Object); // 是不是构造函数 Object

  var p1;
  p1 = ''; // 先给p1 赋值给字符串类型
  p1 = new Person('张三1', 20); // 此时p1是对象类型
  p1.printInfo(); // 正常调用方法
  (p1 as Person).printInfo(); // 也可以强制让p1变成对象类型

  // Person p2 = new Person('张三1', 20);
  // p2.printInfo();
  // p2
  //   ..name = "李四"
  //   ..age = 30
  //   ..printInfo(); // 类似于js的链式调用
}
